#include<stdio.h>
//
//int main() {
//	////一维数组
//	int a[] = { 1,2,3,4 };
//	printf("%d\n", sizeof(a));				//a sizeof(数组名)   16
//	printf("%d\n", sizeof(a + 0));			//a + 0 a是首元素地址 8
//	printf("%d\n", sizeof(*a));				//*a a是首元素地址 *a求首元素大小  4
//	printf("%d\n", sizeof(a + 1));			//a + 1 a是首元素地址 a + 1就是求第二个元素指针的大小 8
//	printf("%d\n", sizeof(a[1]));			//a[1] 首元素的大小 4
//	printf("%d\n", sizeof(&a));				//&a 整个数组的指针 指针的大小 8
//	printf("%d\n", sizeof(*&a));			//*&a == a  sizeof(数组名) 16
//	printf("%d\n", sizeof(&a + 1));			//&a + 1 &a是整个数组的地址 + 1 就是加到数组最后一个元素的后一个字节的地址 8
//	printf("%d\n", sizeof(&a[0]));			//&a[0] 第一个元素的地址 8
//	printf("%d\n", sizeof(&a[0] + 1));		//&a[0] + 1 第二个元素地址 8
//
//	//字符数组
//	char arr[] = { 'a','b','c','d','e','f' };
//	printf("%d\n", sizeof(arr));			//sizeof(数组名)  6
//	printf("%d\n", sizeof(arr + 0));		//arr + 0 arr是首元素地址 +0还是首元素地址 8
//	printf("%d\n", sizeof(*arr));			//*arr 首元素地址解引用 首元素大小 1
//	printf("%d\n", sizeof(arr[1]));			//arr[1] 第二个元素的大小 1
//	printf("%d\n", sizeof(&arr));			//&arr 整个数组的地址 也就是数组大小  8
//	printf("%d\n", sizeof(&arr + 1));		//整个数组的地址+1 数组最后一个元素的后一个字节的地址 8
//	printf("%d\n", sizeof(&arr[0] + 1));	//第二个元素地址 8
//	// 6 8 1 1 8 8 8 
//
//	printf("%d\n", strlen(arr));			//数组的地址 由于字符数组没有 '\0' strlen在找的过程中，不知道什么时候会碰到'\0', 所以是随机值
//	printf("%d\n", strlen(arr + 0));		//数组首元素地址 和第一个一样 也是随机值
//	printf("%d\n", strlen(*arr));			//*arr arr是首元素地址 对arr解引用 就是'a' 'a' ASCII值为97 那么传入strlen的地址就是97 非法访问
//	printf("%d\n", strlen(arr[1]));			//传入第二个元素也就是 'b', 和上一个类似 非法访问98 的地址  
//	printf("%d\n", strlen(&arr));			//&arr是整个数组的地址 那么和前两个一样也是随机值
//	printf("%d\n", strlen(&arr + 1));		//&arr + 1 整个数组的下一个字节地址 随机值
//	printf("%d\n", strlen(&arr[0] + 1));	//第一个元素地址+1 第二个元素地址 也是随机值
//
//
//	char arr[] = "abcdef";
//	printf("%d\n", sizeof(arr));			//数组大小 7
//	printf("%d\n", sizeof(arr + 0));		//首元素地址大小 8
//	printf("%d\n", sizeof(*arr));			//首元素大小 1
//	printf("%d\n", sizeof(arr[1]));			//第二个元素大小 1
//	printf("%d\n", sizeof(&arr));			//整个数组指针大小 8
//	printf("%d\n", sizeof(&arr + 1));		//整个数组下一个字节指针大小 8
//	printf("%d\n", sizeof(&arr[0] + 1));	//第二个元素指针大小 8
//
//	// 7 8 1 1 8 8 8
//		
//	printf("%d\n", strlen(arr));			//从首元素地址开始到'\0'的元素个数 6
//	printf("%d\n", strlen(arr + 0));		//从首元素地址开始到'\0'的元素个数 6
//	printf("%d\n", strlen(*arr));			//把第一个元素'a' 当地址传入 err 非法访问
//	printf("%d\n", strlen(arr[1]));			//把第一个元素'b' 当地址传入 err 非法访问
//	printf("%d\n", strlen(&arr));			//从整个数组地址开始到'\0'的元素个数 6
//	printf("%d\n", strlen(&arr + 1));		//整个数组的下一个字节地址到'\0'的元素个数 随机值
//	printf("%d\n", strlen(&arr[0] + 1));	//从第二个元素地址开始到'\0'的元素个数 5
//
//	char* p = "abcdef";
//	printf("%d\n", sizeof(p));			//char* 大小 8
//	printf("%d\n", sizeof(p + 1));		//char* 大小 8
//	printf("%d\n", sizeof(*p));			//char  大小 1
//	printf("%d\n", sizeof(p[0]));		//首元素 char 大小 1
//	printf("%d\n", sizeof(&p));			//char** 大小 8
//	printf("%d\n", sizeof(&p + 1));		//char** 大小 8
//	printf("%d\n", sizeof(&p[0] + 1));	//第二个元素 char* 大小 8
//
//	// 8 8 1 1 8 8 8
//	printf("%d\n", strlen(p));			//p指向字符串的长度 6
//	printf("%d\n", strlen(p + 1));		//从字符b地址开始到'\0'的长度 5
//	printf("%d\n", strlen(*p));			//传入首元素'a' 当做地址 err 非法访问
//	printf("%d\n", strlen(p[0]));		//传入首元素'a' 当做地址 err 非法访问
//	printf("%d\n", strlen(&p));			//传入p的地址 后面的地址未知 随机值
//	printf("%d\n", strlen(&p + 1));		//传入p的地址 + 1 后面未知 随机值
//	printf("%d\n", strlen(&p[0] + 1));	//传入'a'的地址 + 1 也就是b的地址 5
//
//	// 6 5 ?????
//
//	//二维数组
//	int a[3][4] = { 0 };
//	printf("%d\n", sizeof(a));					//整个数组大小 48
//	printf("%d\n", sizeof(a[0][0]));			//第一个元素的第一个元素的大小 int大小 4
//	printf("%d\n", sizeof(a[0]));				//第一个元素大小 int[4] 大小 16
//	printf("%d\n", sizeof(a[0] + 1));			//a[0] + 1 是第一个元素的第二个元素的地址 8
//	printf("%d\n", sizeof(*(a[0] + 1)));		//第一个元素的第二个元素的大小 4
//	printf("%d\n", sizeof(a + 1));				//第二个元素的地址 8
//	printf("%d\n", sizeof(*(a + 1)));			//第二个元素的地址解引用的大小 16
//	printf("%d\n", sizeof(&a[0] + 1));			//第二个元素的地址 8
//	printf("%d\n", sizeof(*(&a[0] + 1)));		//第二个元素的大小 16
//	printf("%d\n", sizeof(*a));					//a没有单独在sizeof那就是第一个元素的地址，也就是
//												//对第一个元素地址解引用 16
//	printf("%d\n", sizeof(a[3]));				//第四个元素的大小 16 但是数组只有三个元素 越界了但是计算大小是用类型计算
//	
//	// 48 4 16 8 4 8 16 8 16 16 16
//
//	return 0;
//}

void printlx(int n) {
	int line = n;

	//上半部分
	for (int i = 0; i < line; ++i) {
		//打印空格
		for (int j = 0; j < line - i - 1; ++j) {
			printf(" ");
		}

		//打印*
		for (int j = 0; j < 2 * i + 1; ++j) {
			printf("*");
		}

		printf("\n");
	}

	//下半部分
	for (int i = 0; i < line - 1; ++i) {
		//打印空格
		for (int j = 0; j <= i; ++j) {
			printf(" ");
		}

		//打印*
		for (int j = 0; j < 2 * (line - i - 1) - 1; ++j) {
			printf("*");
		}
		printf("\n");
	}
}

//      *
//     ***
//    *****
//   *******
//  *********
// ***********
//*************
// ***********
//  *********
//   *******
//    *****
//     ***
//      *

//输入一个整数数组，实现一个函数，

//来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分，

//所有偶数位于数组的后半部分

//int arr[] = {0,1,2,3,4,5,6,7,8,9};
void swap_arr(int arr[], int size) {
	int left = 0;
	int right = size - 1;

	while (left < right) {
		while (left < right && (arr[right] % 2 == 0)) {
			right--;
		}
		while (left < right && (arr[left] % 2 != 0)) {
			left++;
		}

		int tmp = arr[left];
		arr[left] = arr[right];
		arr[right] = tmp;

		left++;
		right--;
	}
}

//喝汽水，1瓶汽水1元，2个空瓶可以换一瓶汽水，给20元，可以喝多少汽水（编程实现）
int heqishui(int money) {
	int empty = 0;
	int total = 0;

	//money元的钱可以买money瓶水喝和money瓶空瓶
	total = money;
	empty = money;

	//只要有两个及以上空瓶，就能继续换水
	while (empty > 1) {
		//两空换一瓶
		total += (empty / 2);

		//两空换一瓶 + 不够两个的空瓶
		empty = empty / 2 + empty % 2;
	}

	return total;
}

//void my_strcpy(char* dst, const char* src) {
//	char* tmp = dst;
//	while (tmp) {
//		*tmp = *src;
//		tmp++;
//		src++;
//	}
//
//	return dst;
//}


int main() {
	//printlx(7);

	//int arr[] = { 0,1,2,3,4,5,6,7,8,9 };
	//int size = sizeof(arr) / sizeof(arr[0]);
	//for (int i = 0; i < size; ++i) {
	//	printf("%d ", arr[i]);
	//}

	//printf("\n");

	//swap_arr(arr, size);

	//for (int i = 0; i < size; ++i) {
	//	printf("%d ", arr[i]);
	//}

	printf("%d ", heqishui(20));

	return 0;
}